#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>

int main(void){
  pid_t pid;
  int i, n = 5;

  for(i=0; i<n; i++){
    pid = fork();
    int status;

    switch(pid){
      case -1: //fork error
        perror("fork error");
        printf("errno value= %d\n", errno);
        exit(EXIT_FAILURE);
      break;

      case 0: //proceso hijo
        printf("HIJO %d CREADO EXITOSAMENTE -> Proceso %d\n",i+1, getpid());
        sleep(1*(i+1));
        exit(EXIT_SUCCESS);

      default:
        printf("HE CREADO EL HIJO %d\n", i+1);
        while(pid!= wait(&status));
          if(WIFEXITED(status)){
            printf("El hijo murio normalmente y su valor ha sido %d.\n\n", WEXITSTATUS(status));
          }
      break;
    }
  }

  return 0;
}
